home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne. JOVE *
- * is provided to you without charge, and with no warranty. You may give *
- * away copies of JOVE, including sources, provided that this notice is *
- * included in all the files. *
- ***************************************************************************/
-
- #include "jove.h"
-
- #ifdef LOAD_AV
- # if defined(BSD4_2) && !defined(BSD2_10)
- # if defined(PURDUE_EE) && (defined(vax) || defined(gould))
-
- void
- closekmem()
- {
- }
-
- int
- get_la()
- {
- return loadav(0);
- }
-
- # else /* !(defined(PURDUE_EE) && (defined(vax) || defined(gould))) */
-
- #ifdef sun
- # include <sys/param.h>
- #endif
- #include <nlist.h>
-
- /*
- * struct nlist has different sizes on various machines. So we
- * deliberately initialize only the first element.
- */
- static struct nlist nl[] = {
- { "_avenrun" },
- #define X_AVENRUN 0
- { "" },
- };
-
- static int kmem = 0;
-
- void
- closekmem()
- {
- if (kmem > 0)
- close(kmem);
- }
-
- int
- get_la()
- {
- #ifdef sun
- long avenrun[3];
- #else
- double avenrun[3];
- #endif
- extern long lseek proto((int, long, int));
-
- if (kmem == -1) {
- return 400; /* So shell commands will say "Chugging" */
- } else if (kmem == 0) {
- if ((kmem = open("/dev/kmem", 0)) == -1) {
- f_mess("Can't open kmem for load average.");
- return 400;
- }
- nlist("/vmunix", nl);
- }
- lseek(kmem, (long) nl[X_AVENRUN].n_value, 0);
- read(kmem, (UnivPtr) avenrun, sizeof(avenrun));
- #ifdef sun
- return (int) (avenrun[0] * 100L / FSCALE);
- #else
- return (int) (avenrun[0] * 100. + .5);
- #endif
- }
-
- # endif /* !(defined(PURDUE_EE) && (defined(vax) || defined(gould))) */
- # else /* !(defined(BSD4_2) && !defined(BSD2_10)) */
-
- void
- closekmem()
- {
- }
-
- int
- get_la()
- {
- short avg[3];
-
- gldav(avg);
- return (int) (avg[0]*100L / 256);
- }
-
- # endif /* !(defined(BSD4_2) && !defined(BSD2_10)) */
- #endif /* LOAD_AV */
-